home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Programming / AmigaTalk / Intuition / Menu.st < prev    next >
Text File  |  2000-05-02  |  7KB  |  256 lines

  1. "---------------------------------------------------"
  2. " Menu Class implements control of Amiga Menus      "
  3. " except for actually displaying it, which is in the"
  4. " Window class.                                     "
  5. "---------------------------------------------------"
  6.  
  7. Class Menu :Glyph
  8.    nextMenu leftEdge topEdge width height flags menuName firstItem
  9. !
  10. [
  11.    getStartPoint
  12.       leftEdge <- <primitive 182 2 0 0 menuName>.
  13.       topEdge  <- <primitive 182 2 1 0 menuName>.
  14.       ^ leftEdge @ topEdge
  15. |
  16.    getMenuSize
  17.       width  <- <primitive 182 2 2 0 menuName>.
  18.       height <- <primitive 182 2 3 0 menuName>.
  19.       ^ width @ height
  20. |
  21.    setStartPoint: newPoint ! x y !
  22.       x <- newPoint x.
  23.       y <- newPoint y.
  24.       <primitive 182 3 0 x 0 menuName>.      
  25.       <primitive 182 3 1 y 0 menuName>.
  26.       leftEdge <- x.
  27.       topEdge  <- y
  28. |
  29.    setMenuSize: sizePoint ! w h !
  30.       w <- sizePoint x.
  31.       h <- sizePoint y.
  32.       <primitive 182 3 2 w 0 menuName>.
  33.       <primitive 182 3 3 h 0 menuName>.
  34.       width  <- w.
  35.       height <- h
  36. |
  37.    remove
  38.       <primitive 182 0 0 menuName>
  39. |
  40.    registerTo: windowTitle
  41.       <primitive 182 4 windowTitle menuName>
  42. |
  43.    getFlags
  44.       ^ flags <- <primitive 182 2 4 0 menuName>
  45. |
  46.    setFlags: newFlags
  47.       <primitive 182 3 4 newFlags 0 menuName>.
  48.       flags <- newFlags
  49. |
  50.    getNextMenu
  51.       ^ nextMenu <- <primitive 182 2 8 0 menuName>
  52. |
  53.    setNextMenu: newNextMenu
  54.       <primitive 182 3 8 newNextMenu 0 menuName>.
  55.       nextMenu <- newNextMenu
  56. |
  57.    getFirstItem
  58.       ^ firstItem <- <primitive 182 2 9 0 menuName>
  59. |
  60.    setFirstItem: newFirstItem
  61.       <primitive 182 3 9 newFirstItem 0 menuName>.
  62.       firstItem <- newFirstItem
  63. |
  64.    getMenuName
  65.       ^ menuName <- <primitive 182 2 13 0 menuName>
  66. |
  67.    setMenuName: newMenuName
  68.       <primitive 182 3 13 newMenuName 0 menuName>.
  69.       menuName <- newMenuName
  70. |
  71.    new: newMenuName
  72.       <primitive 182 1 0 newMenuName>.
  73.       menuName <- newMenuName.
  74.       ^ self
  75. ]
  76.  
  77. Class MenuItem :Menu
  78.    nextItem leftEdge   topEdge width   height     flags    mutualExclude 
  79.    itemFill selectFill command subItem nextSelect itemName
  80. !
  81. [
  82.    remove
  83.       <primitive 182 0 1 itemName>
  84. |
  85.    registerTo: windowTitle
  86.       <primitive 182 4 windowTitle itemName>
  87. |
  88.    getStartPoint
  89.       leftEdge <- <primitive 182 2 0 1 itemName>.
  90.       topEdge  <- <primitive 182 2 1 1 itemName>.
  91.       ^ leftEdge @ topEdge
  92. |
  93.    getItemSize
  94.       width  <- <primitive 182 2 2 1 itemName>.
  95.       height <- <primitive 182 2 3 1 itemName>.
  96.       ^ width @ height
  97. |
  98.    setStartPoint: newPoint ! x y !
  99.       x <- newPoint x.
  100.       y <- newPoint y.
  101.       <primitive 182 3 0 x 1 itemName>.
  102.       <primitive 182 3 1 y 1 itemName>.
  103.       leftEdge <- x.
  104.       topEdge  <- y
  105. |
  106.    setItemSize: sizePoint ! w h !
  107.       w <- sizePoint x.
  108.       h <- sizePoint y.
  109.       <primitive 182 3 2 w 1 itemName>.
  110.       <primitive 182 3 3 h 1 itemName>.
  111.       width  <- w.
  112.       height <- h
  113. |
  114.    getFlags
  115.       ^ flags <- <primitive 182 2 4 1 itemName>
  116. |
  117.    setFlags: newFlags
  118.       <primitive 182 3 4 newFlags 1 itemName>.
  119.       flags <- newFlags
  120. |
  121.    getMutualExclude
  122.       ^ mutualExclude <- <primitive 182 2 5 1 itemName>
  123. |
  124.    setMutualExclude: newMutualExclude
  125.       <primitive 182 3 5 newMutualExclude 1 itemName>.
  126.       mutualExclude <- newMutualExclude
  127. |
  128.    getCommand
  129.       ^ command <- <primitive 182 2 6 1 itemName>
  130. |
  131.    setCommand: newCommand
  132.       <primitive 182 3 6 newCommand 1 itemName>.
  133.       command <- newCommand
  134. |
  135.    getNextItem
  136.       ^ nextItem <- <primitive 182 2 7 1 itemName>
  137. |
  138.    setNextItem: newNextItem
  139.       <primitive 182 3 7 newNextItem 1 itemName>.
  140.       nextItem <- newNextItem
  141. |
  142.    getItemFill
  143.       ^ itemFill <- <primitive 182 2 10 1 itemName>
  144. |
  145.    setItemFill: newItemFill
  146.       <primitive 182 3 10 newItemFill 1 itemName>.
  147.       itemFill <- newItemFill
  148. |
  149.    getSelectFill
  150.       ^ selectFill <- <primitive 182 2 11 1 itemName>
  151. |
  152.    setSelectFill: newSelectFill
  153.       <primitive 182 3 11 newSelectFill 1 itemName>.
  154.       selectFill <- newSelectFill
  155. |
  156.    getSubItem
  157.       ^ subItem <- <primitive 182 2 12 1 itemName>
  158. |
  159.    setSubItem: newSubItem
  160.       <primitive 182 3 12 newSubItem 1 itemName>.
  161.       subItem <- newSubItem
  162. |
  163.    new: newItemName
  164.       <primitive 182 1 1 newItemName>.
  165.       itemName <- newItemName.
  166.       ^ self
  167. ]
  168.  
  169. Class SubItem :MenuItem
  170.    nextItem leftEdge topEdge width height flags mutualExclude 
  171.    itemFill selectFill command nextSelect subItemName
  172. !
  173. [
  174.    remove
  175.       <primitive 182 0 2 subItemName>
  176. |
  177.    registerTo: windowTitle
  178.       <primitive 182 4 windowTitle subItemName>
  179. |
  180.    getStartPoint
  181.       leftEdge <- <primitive 182 2 0 2 subItemName>.
  182.       topEdge  <- <primitive 182 2 1 2 subItemName>.
  183.       ^ leftEdge @ topEdge
  184. |
  185.    getSubSize
  186.       width  <- <primitive 182 2 2 2 subItemName>.
  187.       height <- <primitive 182 2 3 2 subItemName>.
  188.       ^ width @ height
  189. |
  190.    setStartPoint: newPoint ! x y !
  191.       x <- newPoint x.
  192.       y <- newPoint y.
  193.       <primitive 182 3 0 x 2 subItemName>.
  194.       <primitive 182 3 1 y 2 subItemName>.
  195.       leftEdge <- x.
  196.       topEdge  <- y
  197. |
  198.    setSubSize: sizePoint ! w h ! 
  199.       w <- sizePoint x.
  200.       h <- sizePoint y.
  201.       <primitive 182 3 2 w 2 subItemName>.
  202.       <primitive 182 3 3 h 2 subItemName>.
  203.       width  <- w.
  204.       height <- h
  205. |
  206.    getFlags
  207.       ^ flags <- <primitive 182 2 4 2 subItemName>
  208. |
  209.    setFlags: newFlags
  210.       <primitive 182 3 4 newFlags 2 subItemName>.
  211.       flags <- newFlags
  212. |
  213.    getMutualExclude
  214.       ^ mutualExclude <- <primitive 182 2 5 2 subItemName>
  215. |
  216.    setMutualExclude: newMutualExclude
  217.       <primitive 182 3 5 newMutualExclude 2 subItemName>.
  218.       mutualExclude <- newMutualExclude
  219. |
  220.    getCommand
  221.       ^ command <- <primitive 182 2 6 2 subItemName>
  222. |
  223.    setCommand: newCommand
  224.       <primitive 182 3 6 newCommand 2 subItemName>.
  225.       command <- newCommand
  226. |
  227.    getNextItem
  228.       ^ nextItem <- <primitive 182 2 7 2 subItemName>
  229. |
  230.    setNextItem: newNextItem
  231.       <primitive 182 3 7 newNextItem 2 subItemName>.
  232.       nextItem <- newNextItem
  233. |
  234.    getItemFill
  235.       ^ itemFill <- <primitive 182 2 10 2 subItemName>
  236. |
  237.    setItemFill: newItemFill
  238.       <primitive 182 3 10 newItemFill 2 subItemName>.
  239.       itemFill <- newItemFill
  240. |
  241.    getSelectFill
  242.       ^ selectFill <- <primitive 182 2 11 2 subItemName>
  243. |
  244.    setSelectFill: newSelectFill
  245.       <primitive 182 3 11 newSelectFill 2 subItemName>.
  246.       selectFill <- newSelectFill
  247. |
  248.    new: newSubItemName
  249.       <primitive 182 1 2 newSubItemName>.
  250.       subItemName <- newSubItemName.
  251.       ^ self
  252. ]
  253.